/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controldepuntos.clases;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Time;
import java.text.DateFormat;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.swing.JOptionPane;

/**
 *
 * @author Víctor
 */
@Entity
@Table(name = "tr_incidente")
@NamedQueries({
    @NamedQuery(name = "TrIncidente.findAll", query = "SELECT t FROM TrIncidente t")})
public class TrIncidente implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_incidente")
    private Integer idIncidente;
    @Column(name = "fecha")
    @Temporal(TemporalType.DATE)
    private String fecha;
    @Column(name = "hora")
    @Temporal(TemporalType.TIME)
    private Date hora;
    @JoinColumn(name = "id_alumno", referencedColumnName = "id_alumno")
    @ManyToOne
    Integer idAlumno;
    @JoinColumn(name = "id_reglamento", referencedColumnName = "id_reglamento")
    @ManyToOne
    private Integer idReglamento;

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }
    private String observaciones;

    public TrIncidente() {
    }

    public TrIncidente(Integer idIncidente) {
        this.idIncidente = idIncidente;
    }

    public Integer getIdIncidente() {
        return idIncidente;
    }

    public void setIdIncidente(Integer idIncidente) {
        this.idIncidente = idIncidente;
    }

    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    public Date getHora() {
        return hora;
    }

    public void setHora(Date hora) {
        this.hora = hora;
    }

    public Integer getIdAlumno() {
        return idAlumno;
    }

    public void setIdAlumno(Integer idAlumno) {
        this.idAlumno = idAlumno;
    }

    public Integer getIdReglamento() {
        return idReglamento;
    }

    public void setIdReglamento(Integer idReglamento) {
        this.idReglamento = idReglamento;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idIncidente != null ? idIncidente.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TrIncidente)) {
            return false;
        }
        TrIncidente other = (TrIncidente) object;
        if ((this.idIncidente == null && other.idIncidente != null) || (this.idIncidente != null && !this.idIncidente.equals(other.idIncidente))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "controldepuntos.clases.TrIncidente[ idIncidente=" + idIncidente + " ]";
    }
    
    public void insertarIncidente(TrIncidente incidente){    
        try{
            Connection con;
            Statement stm;
            String SQL="INSERT INTO tr_incidente (id_alumno, id_reglamento, fecha, hora, observaciones) values ('"+incidente.getIdAlumno()+"','"+incidente.getIdReglamento()+"','"+incidente.getFecha()+"','"+incidente.getHora()+"','"+incidente.getObservaciones()+"')";
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase d = new DataBase();
            con = d.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, "El incidente se ha agregado satisfactoriamente","Éxito",JOptionPane.INFORMATION_MESSAGE);
                AdministradorVentanas.ocultarPantallaAltaIncidencia();
                AdministradorVentanas.pantallaModificarIncidencia=null;
                AdministradorVentanas.mostrarPantallaModificarIncidencia();
                //ARCatalogoFalta pantalla = new ARCatalogoFalta();
                //pantalla.cargaCatalogoReglamento();
                //AdministradorVentanas.ocultarPantallaNuevoAlumno();
                //AdministradorVentanas.mostrarPantallaAlumnos();
            }
            
        }catch(Exception ex){
            JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, ex.getMessage());
        }
    
    }
   public ResultSet buscarTodoPorNumeroDeControlResultSet(String numeroDeControl){
        try{
            Statement stm;
            ResultSet rs;
            String SQL="SELECT i.id_incidente, i.fecha as Fecha, i.hora as Hora ,descripcion as Descripción, r.puntos as Puntos "
                    +"FROM tr_incidente i, tc_reglamento r, tr_alumno a "
                    +"WHERE a.numero_de_control='"+numeroDeControl+"' AND i.id_reglamento=r.id_reglamento AND i.id_alumno=a.id_alumno;";
            DataBase d = new DataBase();
            Connection con = d.conectar();
            stm=con.createStatement();
            rs=stm.executeQuery(SQL);
            if(rs!=null){
                return rs;
            }
            return null;
        }catch(Exception ex){
            JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, ex.getMessage(),"Error buscarTodoPorNumeroDeControlResultSet",JOptionPane.ERROR_MESSAGE);
            return null;
        }
        
    }
   public void eliminarIncidente(TrIncidente incidenteAEliminar){
         try{
            Statement stm;
            Connection con;
            String SQL="DELETE FROM tr_incidente WHERE id_incidente="+incidenteAEliminar.getIdIncidente();
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaModificarIncidencia, "Incidente eliminado satisfactoriamente","Éxito",JOptionPane.INFORMATION_MESSAGE);
                AdministradorVentanas.ocultarPantallaModificarIncidencia();
                AdministradorVentanas.pantallaModificarIncidencia=null;
                AdministradorVentanas.mostrarPantallaModificarIncidencia();
            }
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, "Lo sentimos, Ocurrió un error."+ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
         }
    }
   public TrIncidente seleccionarPorId(String id){
         try{
            TrIncidente incidenteEncontrado=null;
            Statement stm;
            Connection con;
            String SQL="SELECT id_reglamento, fecha, hora, observaciones FROM tr_incidente WHERE id_incidente="+id;
            ResultSet rs;
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            rs = stm.executeQuery(SQL);
            while(rs.next()){
                incidenteEncontrado=new TrIncidente();
                incidenteEncontrado.setIdIncidente(Integer.parseInt(rs.getString("id_reglamento")));
                incidenteEncontrado.setFecha(rs.getString("fecha"));
                incidenteEncontrado.setHora(Time.valueOf(rs.getString("hora")));
                incidenteEncontrado.setObservaciones(rs.getString("observaciones"));
            }
            return incidenteEncontrado;
            
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, "Lo sentimos, Ocurrió un error. TrAlumno.seleccionarPorId"+ex.getMessage()+ex.getStackTrace(),"Error",JOptionPane.ERROR_MESSAGE);
             return null;
         }
    }
    public void modificarIncidente(TrIncidente incidenteAModificar){
         try{
            Statement stm;
            Connection con;
            String SQL="UPDATE tr_incidente set id_reglamento="+incidenteAModificar.getIdReglamento()
                       +", fecha='"+incidenteAModificar.getFecha()+"', hora='"+incidenteAModificar.getHora()
                       +"', observaciones='"+incidenteAModificar.getObservaciones()+"' WHERE id_incidente="+incidenteAModificar.getIdIncidente();
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, "Incidente modificado correctamente","Éxito",JOptionPane.INFORMATION_MESSAGE);
                AdministradorVentanas.ocultarPantallaModificarIncidencia();
                AdministradorVentanas.pantallaModificarIncidencia=null;
                AdministradorVentanas.mostrarPantallaModificarIncidencia();
            }
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaAlumnos, "Lo sentimos, Ocurrió un error."+ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
         }
     }
    
}
